Skip to content

feat(research): comparison paper #02 page + academic-paper redesign#138

Merged
omsherikar merged 10 commits into
mainfrom
feat/comparison-paper
May 15, 2026
Merged

feat(research): comparison paper #02 page + academic-paper redesign#138
omsherikar merged 10 commits into
mainfrom
feat/comparison-paper

Conversation

@omsherikar
Copy link
Copy Markdown
Collaborator

@omsherikar omsherikar commented May 15, 2026

Summary

Publishes research paper #2 (/research/comparison-01) and rebuilds both research pages with an academic-paper layout, inspired by the supermemory research page.

New — comparison paper #2

/research/comparison-01 — the head-to-head benchmark of Refactron against jscodeshift, Comby, ESLint --fix, and LibCST on var → const/let and format → f-string. Built on the measured dataset from Refactron_Lib_TS PR #27.

  • Two SVG figures: a grouped coverage bar chart (colour = safety) and a speed-vs-coverage scatter (the "careful vs unguarded" split)
  • Compact benchmark-band scorecard, result tables, discussion, limitations
  • Research index updated: paper 02 flipped from "planned" to "live"

Layout — both research pages

Restructured /research/perf-01 and /research/comparison-01 to a shared academic-paper shell:

  • Sticky CONTENTS sidebar with scroll-spy active-section highlight
  • Full-width benchmark band below the hero
  • Two-column body, authors box, figure panels with captions
  • Bracketed [n] citations + numbered references

Also in this branch

  • ScrollToTop — resets scroll on route change (the committed App.tsx already imported it; this lands the component)
  • AboutPage — hero navbar-clearance padding, chip-card label contrast, lifted background
  • Route, prerender, and sitemap entries for the research pages

Test plan

  • npm run build green — all research pages pre-render
  • Lint clean
  • Reviewer: check the sticky TOC + scroll-spy on /research/comparison-01 and /research/perf-01
  • Reviewer: confirm scatter chart labels do not collide

Summary by CodeRabbit

  • New Features

    • Added two new research articles: Performance Report 01 and Comparison Report 02
    • Redesigned research section with improved paper listings and navigation
    • Added automatic scroll-to-top behavior on page navigation
  • Style

    • Updated About page styling and layout for improved visual design
  • Chores

    • Updated sitemap and build configurations for new pages

Review Change Stack

…seline

New /research/comparison-01 page: the head-to-head benchmark against
jscodeshift, Comby, ESLint --fix, and LibCST on var->const/let and
format->f-string. Speed, coverage, safety on identical inputs.

- ResearchComparison01Page component, same paper-style layout as perf-01
- research index: paper 02 flipped from planned to live
- route, prerender list, and sitemap updated
… paper

Two SVG figures in the comparison paper:
- Figure 1: grouped coverage bar chart, bar colour encodes safety
- Figure 2: speed-vs-coverage scatter with a 'safe band' highlight —
  visually shows safe results cluster high, unsafe below 50%
Restructured after the supermemory research-page references:
- sticky CONTENTS sidebar with scroll-spy active-section highlight
- full-width benchmark band (compact scorecard) below the hero
- two-column paper body (TOC + content)
- authors box, figure panels with captions
- bracketed [n] citations with inline superscript links + references

Fix: dropped overflow-x-hidden from the article — it turned the article
into a scroll container and broke position:sticky on the TOC.
- jscodeshift/Comby (both bottom-left, close together) now label in
  opposite directions — the higher point up, the lower point down
- both Refactron points label below — above-the-point clipped the plot
  top and collided with the band caption
- band caption moved from the top-right corner (where Refactron·var sat)
  to the band's empty middle
Restructured the performance report to match comparison-01:
- sticky CONTENTS sidebar with scroll-spy
- full-width benchmark band (compact analyze scorecard) below the hero
- two-column paper body (TOC + content)
- authors box, figure panels with captions, bracketed [n] citations
- dropped the stale 'coming next' section — paper #2 is now live and
  is linked from the discussion + references instead

All charts (v0.1-vs-v0.2 dot plot, pipeline, 3-gate diagram) preserved.
App.tsx already mounts <ScrollToTop /> — this adds the component it
imports. Resets window scroll on pathname change so navigating between
pages (e.g. /research → /research/perf-01) opens at the top instead of
inheriting the previous page's offset. Skips when the URL has a #hash.
- hero: explicit top padding clears the fixed navbar instead of relying
  on flex-centering into it
- hero chip card: corner + on-chip labels lifted out of near-invisible
  opacity so they read against the page
- page background lifted from pure black to the warmer #050506 + radial
  used across the research pages
Copilot AI review requested due to automatic review settings May 15, 2026 13:40
@vercel
Copy link
Copy Markdown

vercel Bot commented May 15, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
refactron Ready Ready Preview, Comment May 15, 2026 1:53pm

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 15, 2026

Warning

Rate limit exceeded

@omsherikar has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 48 minutes and 33 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d1bfe848-5ddb-4e58-b96a-a4d9bec69187

📥 Commits

Reviewing files that changed from the base of the PR and between fea8d3b and 9e27636.

📒 Files selected for processing (4)
  • scripts/generate-sitemap.js
  • src/components/ResearchComparison01Page.tsx
  • src/components/ResearchPage.tsx
  • src/components/ResearchPerf01Page.tsx
📝 Walkthrough

Walkthrough

This PR adds two comprehensive research report pages (ResearchPerf01Page and ResearchComparison01Page) to document Refactron performance and tool comparisons, rewrites the research landing page as a public stream, integrates scroll-on-navigate behavior, updates routing and SEO infrastructure, and refreshes AboutPage styling.

Changes

Research Pages, Routing, and SEO

Layer / File(s) Summary
Scroll-on-navigate behavior
src/components/ScrollToTop.tsx
New ScrollToTop component uses useLocation and useEffect to reset scroll position on route navigation, skipping when a hash is present for anchor-based scrolling.
Route registration and ScrollToTop integration
src/App.tsx
Imports new research pages and ScrollToTop, renders ScrollToTop inside the router, and adds routes for /research/perf-01 and /research/comparison-01 within PageLayout.
SEO infrastructure for research routes
scripts/generate-sitemap.js, scripts/prerender.js, public/sitemap.xml
Extends generate-sitemap.js static routes with three research URLs and updates /research priority; adds /research/perf-01 and /research/comparison-01 to prerender.js pages; updates sitemap.xml with new entries.
Research landing page overhaul
src/components/ResearchPage.tsx
Rewrites page from internal research layout to public research stream with shared Paper metadata types, hero with publication counts, dynamic papers list (live/planned), "About this stream" section, updated footer, and new subcomponents (DotGridBackdrop, Stat, Rule, ExtMono, PaperRow).
Performance report page with embedded charts
src/components/ResearchPerf01Page.tsx
Comprehensive research report on Refactron 0.2.0 performance with SEO metadata, sticky TOC, hero, benchmark band, multi-section content (abstract, methodology, results, pipeline, three-gate logic, limitations, reproducibility, references), and inline SVG charts (comparison chart, results table, pipeline diagram, three-gate diagram).
Comparison report page with embedded charts
src/components/ResearchComparison01Page.tsx
Comprehensive research report on tool comparison (report 02) with SEO metadata, sticky TOC, hero, benchmark band, multi-section content (abstract, setup, results, split, discussion, limitations, references), and inline SVG charts (score band, results table, coverage bar chart, speed-vs-coverage scatter plot).
AboutPage visual styling updates
src/components/AboutPage.tsx
Updates hero chip label positioning and colors, changes root background to radial gradient over #050506, adjusts hero section spacing, and removes bg-black from Contact section.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

type:feature, type:refactor

Poem

A rabbit hops through research trails so bright, 🐰
Two pages bloom with charts and formatted light,
The landing page now streams with papers new,
Scroll to the top when routes change into view,
Sitemaps sing of perf and comparison true! 🎯

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title directly reflects the main changes: adding a new research comparison paper page and redesigning the academic paper layout for research pages.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/comparison-paper

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 15, 2026

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/components/ResearchComparison01Page.tsx (1)

1-1213: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Run Prettier on this file before merge.

CI reports formatting/style warnings for this file; please apply prettier --write.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/ResearchComparison01Page.tsx` around lines 1 - 1213, This file
fails CI formatting — run the project's Prettier formatter (e.g. prettier
--write) on this file so it matches the repo style; specifically reformat the
exported component and its helpers (ResearchComparison01Page, CoverageChart,
ScatterChart, ResultTable, ScoreBand, etc.) and commit the resulting
whitespace/quote/indentation changes so CI passes. Ensure you use the repo
Prettier config (or npm script) to avoid differing settings.
src/components/ResearchPerf01Page.tsx (1)

1-1254: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Run Prettier on this file before merge.

CI reports formatting/style warnings for this file; please run prettier --write to keep the branch clean.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/ResearchPerf01Page.tsx` around lines 1 - 1254, Prettier
formatting is required for this file; run the formatter and commit the updated
file. Specifically, run `prettier --write` (or your repo's format script) on the
file containing ResearchPerf01Page and its helpers (e.g. ResearchPerf01Page,
useActiveSection, ComparisonChart, ResultsTable, PerfBand, PipelineHero,
ThreeGateDiagram) so that CI formatting/style warnings are resolved, then stage
and push the reformatted file.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@scripts/generate-sitemap.js`:
- Line 22: Update the sitemap entry object for the '/research' URL in
scripts/generate-sitemap.js so its priority matches the generated sitemap.xml:
change the object { url: '/research', changefreq: 'monthly', priority: 0.55 } to
use priority: 0.6 (to match public/sitemap.xml) to avoid regeneration drift and
inconsistent SEO metadata.

In `@src/components/ResearchPage.tsx`:
- Around line 1-377: This file fails the project's formatting checks; run
Prettier to fix styling for the ResearchPage component and its subcomponents
(e.g., ResearchPage, PaperRow, DotGridBackdrop, Stat, Rule, ExtMono) by
executing prettier --write on the file (or your repo's format script), review
the resulting changes, and commit them so CI no longer reports formatting/style
warnings.
- Around line 367-373: The live branch currently wraps the <li> with <Link>
causing the <ol> to contain anchors rather than list items; change the JSX so
the <li> remains the direct child of the <ol> and move the <Link> inside the
<li> (preserve existing className="block" and render {inner} inside the Link) —
update the conditional around live && paper.href in ResearchPage.tsx to return
an <li> that contains the <Link to={paper.href}> instead of returning <Link>
that contains the <li>.

---

Outside diff comments:
In `@src/components/ResearchComparison01Page.tsx`:
- Around line 1-1213: This file fails CI formatting — run the project's Prettier
formatter (e.g. prettier --write) on this file so it matches the repo style;
specifically reformat the exported component and its helpers
(ResearchComparison01Page, CoverageChart, ScatterChart, ResultTable, ScoreBand,
etc.) and commit the resulting whitespace/quote/indentation changes so CI
passes. Ensure you use the repo Prettier config (or npm script) to avoid
differing settings.

In `@src/components/ResearchPerf01Page.tsx`:
- Around line 1-1254: Prettier formatting is required for this file; run the
formatter and commit the updated file. Specifically, run `prettier --write` (or
your repo's format script) on the file containing ResearchPerf01Page and its
helpers (e.g. ResearchPerf01Page, useActiveSection, ComparisonChart,
ResultsTable, PerfBand, PipelineHero, ThreeGateDiagram) so that CI
formatting/style warnings are resolved, then stage and push the reformatted
file.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c182b577-eba2-4d66-bcc5-8836a8a64038

📥 Commits

Reviewing files that changed from the base of the PR and between 619d241 and fea8d3b.

📒 Files selected for processing (9)
  • public/sitemap.xml
  • scripts/generate-sitemap.js
  • scripts/prerender.js
  • src/App.tsx
  • src/components/AboutPage.tsx
  • src/components/ResearchComparison01Page.tsx
  • src/components/ResearchPage.tsx
  • src/components/ResearchPerf01Page.tsx
  • src/components/ScrollToTop.tsx

Comment thread scripts/generate-sitemap.js Outdated
Comment thread src/components/ResearchPage.tsx
Comment on lines +367 to +373
if (live && paper.href) {
return (
<Link to={paper.href} className="block">
{inner}
</Link>
);
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Keep <li> as the direct child of <ol>; move the link inside it.

Right now, live rows render as <Link><li /></Link>, so the <ol> contains anchors instead of list items. This breaks list semantics and hurts accessibility.

Suggested fix
-  if (live && paper.href) {
-    return (
-      <Link to={paper.href} className="block">
-        {inner}
-      </Link>
-    );
-  }
-  return inner;
+  if (live && paper.href) {
+    return (
+      <motion.li
+        initial={{ opacity: 0, y: 16 }}
+        whileInView={{ opacity: 1, y: 0 }}
+        viewport={{ once: true, margin: '-60px' }}
+        transition={{ duration: 0.5, delay }}
+        className="grid grid-cols-[60px_1fr_auto] gap-x-6 sm:gap-x-10 py-9 lg:py-12 group"
+      >
+        <Link to={paper.href} className="contents">
+          {/* existing columns/content */}
+        </Link>
+      </motion.li>
+    );
+  }
+  return inner;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/ResearchPage.tsx` around lines 367 - 373, The live branch
currently wraps the <li> with <Link> causing the <ol> to contain anchors rather
than list items; change the JSX so the <li> remains the direct child of the <ol>
and move the <Link> inside the <li> (preserve existing className="block" and
render {inner} inside the Link) — update the conditional around live &&
paper.href in ResearchPage.tsx to return an <li> that contains the <Link
to={paper.href}> instead of returning <Link> that contains the <li>.

@omsherikar omsherikar changed the title Research: comparison paper #02 page + academic-paper redesign feat(research): comparison paper #02 page + academic-paper redesign May 15, 2026
The sitemap library rounds priority to one decimal place, so the
script's 0.55 emitted as 0.6 in sitemap.xml — a drift CodeRabbit
flagged. Use a clean one-decimal value so script and generated XML
agree.
@omsherikar omsherikar merged commit 5a4bd46 into main May 15, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:feature New feature type:refactor Code refactoring

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants